home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 21
/
Cream of the Crop 21 (Terry Blount) (October 1996).iso
/
database
/
tickle15.zip
/
TKLPACK.PPS
< prev
next >
Wrap
Text File
|
1996-08-02
|
7KB
|
274 lines
; TKLPACK.PPS - Database Packing Utility - Version 1.0
; This program checks usersnames in TICKLE.DBF
; then checks the appropriate PCBNDX.? file to
; see if the name exists. If not, the record
; is flagged for deletion.
;
; Written by Dan Shore
;
;--------------------------------------------------------------------------
STRING name_hold, ndx_path, first_letter, ndx_file, ndx_user_name, tkltext
STRING user_input, reg_code, hold, parm1
LONG ndx_size, seek_record, value
FLOAT high_num, low_num, rec_num
INT x, user_rec_num, current_record, high_record, low_record
INT y, cmd_line_count, deleted_users, row, col
BOOLEAN done, name_found, registered, found_files
:START_MAIN
tkltext = PPEPATH() + "TKLTEXT" + LANGEXT()
CLS
NEWLINES 3
PRINTLN READLINE (tkltext,59)
NEWLINES 2
DELAY 18
PRINT READLINE (tkltext,60)
GOSUB READ_CONFIG
PRINTLN READLINE (tkltext,61)
NEWLINE
PRINT READLINE (tkltext,62)
GOSUB MAKE_BACKUP_FILES
PRINTLN READLINE (tkltext,61)
NEWLINE
PRINT READLINE (tkltext,63)
GOSUB OPEN_DATABASE
IF (DERR(0)) THEN
SPRINTLN READLINE (tkltext,64)
LOG "Cannot open TICKLE.DBF (DataBase) in EXCLUSIVE mode - Aborting", FALSE
GOTO EXIT_PROG
END IF
GOSUB OPEN_INDEX
IF (DERR(0)) THEN
SPRINTLN READLINE (tkltext,4)
LOG "Cannot open TICKLE.NDX (Index) - Aborting", FALSE
GOTO EXIT_PROG
END IF
PRINTLN READLINE (tkltext,61)
NEWLINE
PRINTLN READLINE (tkltext,65)
NEWLINE
DELAY 36
GOSUB CHECK_NAMES
IF (deleted_users > 0) THEN
NEWLINES 2
PRINTLN READLINE (tkltext,66)
NEWLINES 2
DTOP 0
DPACK 0
END IF
FPUTLN 2, "Total Number of Records in Database After Pack : ", DRECCOUNT(0)
FPUTLN 2
FPUTLN 2, "Total Users Deleted : ", deleted_users
FPUTLN 2, " Time Completed : ", TIME()
FCLOSE 2
NEWLINE
PRINTLN READLINE (tkltext,67)
NEWLINE
GOTO EXIT_PROG
END
;
;
;
:CHECK_NAMES
DTOP 0
PRINTLN READLINE (tkltext,68)
NEWLINE
FAPPEND 2, PPEPATH()+PPENAME()+".log", O_WR, S_DN
FPUTLN 2
FPUTLN 2
FPUTLN 2, "========================================================================"
FPUTLN 2
FPUTLN 2, "Tickle File Packing Program - Version 1.10"
FPUTLN 2, "Written by Dan Shore - SysOp - The Shoreline BBS"
FPUTLN 2
FPUTLN 2, " Date of Pack : ", DATE()
FPUTLN 2, "Start Time of Pack : ", TIME()
FPUTLN 2
FOR x = 1 TO DRECCOUNT(0)
STARTDISP FNS
DGO 0, x
name_hold = DGET (0,DNAME(0,1))
first_letter = LEFT(name_hold,1)
IF (first_letter < "A") first_letter = "A"
IF (first_letter > "Z") first_letter = "Z"
FPUT 2, "Processing Username: ", name_hold
IF (!row) THEN
PRINT READLINE (tkltext,69)
row = GETX()
col = GETY()
END IF
ANSIPOS row, col
PRINT x
GOSUB PCB_INDEX_SEARCH
found_files = FALSE
IF (parm1 = "TRUE" && name_found) GOSUB CHECK_FOR_FILES
IF (!name_found || (parm1 = "TRUE" && found_files = "FALSE")) THEN
IF (!name_found) FPUTLN 2, "Not Current User - Deleted"
IF (name_found && parm1 = "TRUE" && found_files = FALSE) FPUTLN 2, "No Files - Deleted"
DDELETE 0
INC deleted_users
ELSE
FPUTLN 2, "Current User"
END IF
NEXT
PRINTLN "@X07"
FPUTLN 2
FPUTLN 2, "Total Number of Records in Database Before Pack : ", DRECCOUNT(0)
STARTDISP FCL
RETURN
;
;
;
:PCB_INDEX_SEARCH
ndx_file = ndx_path + "PCBNDX." + first_letter
ndx_size = FILEINF(ndx_file, 4)
IF (ndx_size < 27) THEN
PRINTLN READLINE (tkltext,70), ndx_file, READLINE (tkltext,71)
END IF
high_record = ndx_size/27
low_record = 0
FOPEN 1, ndx_file, O_RD, S_DN
Done = FALSE
name_found = FALSE
WHILE (!Done) DO
high_num = high_record
low_num = low_record
high_num = high_num/2
low_num = low_num/2
rec_num = high_num + low_num + .5
current_record = rec_num
seek_record = (current_record-1) * 27
FSEEK 1, seek_record, SEEK_SET
FREAD 1, user_rec_num, 2
FREAD 1, ndx_user_name, 25
IF (ndx_user_name = name_hold) THEN
name_found = TRUE
done = TRUE
ELSE IF (high_record - low_record < 2) THEN
done = TRUE
ELSE IF (ndx_user_name < name_hold) THEN
low_record = current_record
ELSE IF (ndx_user_name > name_hold) THEN
high_record = current_record
END IF
ENDWHILE
FCLOSE 1
RETURN
;
; Make Backup files of database and index files
;
:MAKE_BACKUP_FILES
COPY PPEPATH()+"TICKLE.DBF", PPEPATH()+"TICKLE.DBK"
COPY PPEPATH()+"TICKLE.NDX", PPEPATH()+"TICKLE.NBK"
RETURN
;
; Open configuration file and read
; to find the path to the PCBNDX.? files
;
:READ_CONFIG
FOPEN 1, PPEPATH()+PPENAME()+".cfg",O_RD,S_DN
FGET 1, ndx_path
FGET 1, parm1
IF (FERR(1)) parm1 = "FALSE"
FCLOSE 1
IF (parm1 != "TRUE") parm1 = "FALSE"
ndx_path = TRIM (ndx_path," ")
IF (RIGHT(ndx_path,1) != "\") ndx_path = ndx_path + "\"
RETURN
'
' Close the index file, the database file, and exit program
'
:EXIT_PROG
DNCLOSEALL 0
DCLOSE 0
PRINTLN READLINE (tkltext,72)
NEWLINE
' GOSUB CHECK_KEY
' IF (registered) THEN
' PRINTLN " @X0BRegistered to: @X0E", user_input, "@X07"
' ELSE
' NEWLINE
' PRINTLN " *************************************************"
' PRINTLN " [Unregistered Version] - Pausing for 5 Seconds"
' PRINTLN " Support the Shareware Concept and Register Today"
' PRINTLN " *************************************************"
' DELAY 90
' END IF
END
'
'
'
':CHECK_KEY
'
' FOPEN 3, PPEPATH() + "TKL.KEY", O_RD, S_DN
' FGET 3, hold
' FGET 3, reg_code
' hold = RTRIM(hold," ")
' hold = MID(hold,INSTR(hold,":")+1,LEN(hold)-INSTR(hold,":"))
' user_input = TRIM(hold," ")
' hold = MID(reg_code,3,LEN(reg_code)-2)
' reg_code = TRIM(hold," ")
' FOR x = 1 TO LEN(user_input)
' y = S2I(MID(user_input,x,1),36)-9
' value = value + y
' NEXT
' IF (value < 0) value = value * -1
' IF (value = 0) value = value + 384
' value = value * 7914
' hold = LTRIM(STRING(value)," ")
' IF (hold = reg_code) registered = TRUE
' FCLOSE 3
' RETURN
'
' Subroutine to open/create database files
'
:OPEN_DATABASE
DOPEN 0, PPEPATH()+"tickle", TRUE
RETURN
'
' Subroutine to open the username index file
'
:OPEN_INDEX
IF (EXIST(PPEPATH()+"tickle.ndx")) DNOPEN 0, PPEPATH()+"tickle"
RETURN
'
'
'
:CHECK_FOR_FILES
IF (DGET(0,DNAME(0,2)) != " ") found_files = TRUE
RETURN